package cn.edu.jxau.test;

import cn.edu.jxau.util.LinkedQueue;
import cn.edu.jxau.util.LinkedStack;
import cn.edu.jxau.util.Queue;
import cn.edu.jxau.util.Stack;

/**
 * 逆序队列
 * @author 付大石
 */
public class Main {

    public static void main(String[] args) {

        Queue<Integer> queue = new LinkedQueue<>();
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);
        queue.enqueue(4);
        queue.enqueue(5);
        System.out.println(queue);
        reverse(queue);
        System.out.println(queue);
    }

    public static <T> void reverse(Queue<T> queue) {
        Stack<T> stack = new LinkedStack<>();
        while (!queue.isEmpty()) {
            stack.push(queue.dequeue());
        }
        while (!stack.isEmpty()) {
            queue.enqueue(stack.pop());
        }
    }
}
